草庐IT

带指针的 C++ vector

全部标签

c++ - 如何从 C++ 中的原始指针数据构造一个 tensorflow::Tensor

我想在操作期间更改输出张量的底层存储。我有一个新数据的原始指针(float*)。我想在启动内核并返回之前将输出张量设置为这个新数据,这样我就可以劫持这个操作。但是我对什么时候应该删除原始指针感到困惑,因为张量构造似乎是一个浅拷贝。我只能在所有张量使用完毕后删除原始指针。但是我怎样才能收到通知呢? 最佳答案 在TensorFlow运行时中没有用于执行此操作的公共(public)API,但可以使用CAPI方法从原始指针创建Tensor对象TF_NewTensor(),具有以下签名://Returnanewtensorthatholdst

c++ - 将指向数组的指针传递给函数 (C++)

我试图将一个数组传递到我对build_max_heap和max_heapify的函数调用中,这样我就可以在每次调用后修改该数组,但我收到一条错误消息“候选函数不可行:没有来自'int[9]的已知转换'到'int*&'第一个参数。”#include#includeusingnamespacestd;voidbuild_max_heap(int*&array,intsize);voidmax_heapify(int*&array,intsize,intindex);voidbuild_max_heap(int*&array,intsize){for(inti=size/2;i>=0;i--

c++ - 如何跨多个文件声明全局 std::vector 二维数组? C++

我有一个头文件,其中有一个二维数组外部声明,还有一个cpp文件,其中有数组的实际定义,供它链接到。我想用二维vector替换这个数组,但我的编译器一直告诉我:'A':redefinition;multipleinitialization这是我的代码标题.h#ifndefHEADERS_H_DECLARED#defineHEADERS_H_DECLARED#include...externstd::vector>A(10,std::vector(10));...#endifA.cpp#include"headers.h"...std::vector>A(10,std::vector(10

c++ - 以类型安全的方式将指针转换为指针

给定以下代码:classBase{public:virtual~Base()=default;};classDerived:publicBase{};intmain(void){Derivedd;Base*pb=&d;Base**ppb=&pb;Derived**ppd=...;//Canthisbedefinedinatype-safemanner?return0;}是否可以在不引入Derived*类型的中间变量的情况下,为ppd的赋值给出一个类型安全的表达式? 最佳答案 AFAIK,并非没有声明一个指向d的Derived指针。指

c++ - 如何通过 vector/ map 使用指向对象的多个指针

我有一个关于使用多个指向一个对象的指针的问题。我在vector中有一个指针,在map中有另一个指针。map使用vector来索引对象。示例代码:classThing{public:intx=1;};Thingobj_Thing;std::vectorv_Things;v_Things.push_back(&obj_Thing);std::mapm_ThingMap;m_ThingsMap[v_Things[0]->x]=v_Things[0];//crucialpart像这样互相分配指针是好习惯吗?vector和/或map应该保存地址吗?或者我应该使用指向map指针的指针吗?

c++ - 用双花括号初始化 vector :std::string vs int

在这个问题的回答中:Initializingvectorwithdoublecurlybraces表明vectorv={{"a","b"}};将调用带有initializer_list的std::vector构造函数和一个元素。因此vector中的第一个(也是唯一一个)元素将从{"a","b"}构造。这会导致未定义的行为,但这超出了这里的重点。我发现的是std::vectorv={{2,3}};将使用两个元素的initializer_list调用std::vector构造函数。造成这种行为差异的原因是什么? 最佳答案 类类型列表初始

C++输出二维 vector

我写了两个for循环,希望看看它们是否会输出名为data的vector中的每个值,但它不起作用。有一个与data[i].at(j)有关的错误,我不太明白。vectordata;//itisfilledwithsomeintegerswithxrowsandycolumnsfor(inti=0;i我也试过这个方法,但也不管用。data.at(i).at(j)有错误。for(inti=0;i这些中的任何一个都可以通过较小的修复工作,还是根本不起作用? 最佳答案 关注这里:data[i].at(j)当您在位置i索引您的vector时,您会

c++ - 能否从指向子对象的指针获得指向完整对象表示元素的指针?

让我们考虑这段代码:inti;intis[10]{};unsignedchar*p=reinterpret_cast(&i);//pdefinedtopointtotheobject-representationofthefirstelementofarrayintsunsignedchar*ps=reinterpret_cast(&is[0]);p+=sizeof(int);ps+=sizeof(int);//nowpspointstotheendofints[0]andppointtotheendofi;p+=sizeof(int);//Undefinedbehavioraccor

c++ - 将 C++ lambda 复制到函数指针引用

我不确定我是否定义了以下情况下的行为:我的函数指针类型:typedefvoid(*DoAfter_cb_type)(void);应该分配回调的函数:voidDoSomething(DoAfter_cb_type&DoAfter_cb){//...DoAfter_cb=[](){//...};}来电者:DoAfter_cb_typeDoAfter_cb=nullptr;DoSomething(DoAfter_cb);//HereissomethingthathastobedoneafterDoSomethingbutbeforeDoAfter_cb.if(DoAfter_cb!=null

c++ - 有没有办法在不创建变量的情况下调用需要指针的函数?

我有这个函数调用:uint32_tfunc(uint32_t*a,uint32_tb)我想用这样的整数文字来调用它:func(0,b);其中b是一个uint32_t。有没有什么方法可以在不创建中间变量的情况下做到这一点?IE。我想避免这样做:uint32_ta=0;func(a,b); 最佳答案 辅助类:structint_ptr{intv;operatorint*(){return&v;}};intfoo(int*a,intb);voidbar(){foo(int_ptr{0},0);}这会导致构造一个临时int_ptr类,将其v